#!user/bin/env python3
# -- coding: utf-8 --

# 一、文件的3种操作（打开，读写，关闭）文件对象.read()/write()/close()
"""
1、文件打开 （注意：不带路径的文件名默认去找该文件夹）

文件对象=open( '文件名' , '访问模式')

（1）访问模式（三个主访问模式）
'r' 只读：如果文件不存在报错，不支持写
'w' 写入：如果文件不存在新建文件，写入时覆盖原有内容
'a' 追加：如果文件不存在新建文件，写入时在原有内容基础上追加新内容

总结：访问模式可以省略，默认为'r'模式

（2）访问模式特点（'b' 二进制、'+' 可读可写）
r、rb、r+、rb+：只要文件不存在都报错，文件指针（光标的位置）放在文件开头
w、wb、w+、wb+：只要文件不存在就新建文件，文件指针在开头，用新内容覆盖原内容
a、ab、a+、ab+：只要文件不存在新建文件，文件指针在结尾，
"""
import os

"""
2、读写操作

文件对象.write('内容')

文件对象.read(num)

 # num表示要从文件中读取数据的长度（单位是字节）【换行\n占一个字节】，省略就表示读取所有数据

文件对象.readlines( )   # 需要赋值给一个变量

# 将整个文件中的内容一次性读取，并返回一个列表，原文件中每一行的数据为一个元素，例如['aaa\n','bbb\n',ccc]
# 每一行都有换行自带\n，最后一行没有换行不带\n

文件对象.readline( )    # 需要赋值给一个变量

# 一次性读取一行内容，第一次调用读取第一行，第二次调用读取第二行，不带换行符\n

"""
text = """
张三李四
王五马六
赵七"""
# with open('./data.csv', 'r', encoding='utf8') as file:
#     # file.write(text)
#     # print(file.read())
#     # print(file.read(6))
#     print(file.readlines(6))
# # print(file.readlines())#全部读取\n表示换行
# print(file.readline())  # 只读取一行
# print(file.readline()) # 读取二行
# print(file.readline())# 读取三行
"""
3、关闭

文件对象.close( )


4、seek( )移动文件指针

文件对象.seek(偏移量，起始位置)   

# 起始位置：0开头，1当前位置，2文件结尾
# 偏移量：假设起始位置是开头，偏移量是5，那文件指针就在第6个字节上
# 偏移量和起始位置都为0时，可以只写一个0
"""
# 例如：

# 文件对象 = open('./data.csv', 'r+', encoding='utf8')
# 文件对象.seek(3, 0)
# print(文件对象.read())
# 文件对象.close()
"""
5、文件备份
（1）用户输入目标文件
文件名 = input('请输入您要备份的文件名：')
（2）规划备份文件的名字
（2.1）提取后缀，找到名字中最右侧的点，名字和后缀分离
点的位置 = 文件名.rfind('.')
（2.2）组织新名字 = 原名字 + [备份] + 后缀
if 点的位置 >0:
        后缀=文件名[点的位置:] 
else:
        print('文件名输入错误')

新名字 = 文件名[:点的位置]+'[备份]' + 后缀
"""
# 文件名 = input("请输入文件名:")
# 点位置 = 文件名.rfind('.')
# if 点位置 > 0:
#     后缀 = 文件名[点位置:]
# else:
#     print('你输入的文件名有误')
# 新名字 = 文件名[:点位置] + '[备份]' + 后缀
# 旧文件=open(文件名,'r')
# 新文件=open(文件名,'w')
# while True:
#     读取的数据=旧文件.read(7)
#     if len(读取的数据)==0:
#         break
#     新文件.write(读取的数据)
# 旧文件.close()
# 新文件.close()
"""
6、文件和文件夹操作
（1）os模块：操作文件和文件夹
import os    # 导入模块
os.函数名( )  # 使用os模块相关功能
（2）文件和文件夹重命名
os.rename('旧文件名'，'新文件名')   # 目标文件名可以写路径，否则默认当前文件夹下面
os.rename('旧文件夹名','新文件夹名')
（3）删除文件 （没有指定文件会报错）
os.remove(目标文件名)
（4）创建文件夹 (重复创建相同名字的文件夹报错)
os.mkdir(文件夹名字)
（5）删除文件夹 （没有指定文件夹报错）
os.rmdir(文件夹名字)
（6）获取当前文件所在目录路径
os.getcwd( )
例如：print(os.getcwd( ))
（7）改变默认目录
os.chdir(目录)
用于改变当前工作目录到指定的路径
例如：在当前文件夹aa目录下创建bb目录
os.chdir('aa')
os.mkdir('bb')
（8）获取某个文件夹下所有文件和文件夹的名字，返回一个列表
os.listdir(目录)
例如：print(os.listdir( ))   # 返回当前文件夹下
例如：print(os.listdir( '文件夹名' ))  # 返回指定文件夹下

"""
print(os.listdir('9_异常处理'))
